package be.ipl.abeille.domaine;

import java.io.Serializable;
import java.util.Comparator;
import java.util.Map;
import java.util.Map.Entry;

public class ScoreEntry implements Map.Entry<Joueur, Double>, Serializable{

		private Joueur key;
		private double value;

		public ScoreEntry(Joueur j, double score) {
			this.key = j;
			this.value = score;
		}

		@Override
		public Joueur getKey() {
			return key;
		}

		@Override
		public Double getValue() {
			return value;
		}

		@Override
		public Double setValue(Double value) {
			Double ret = this.value;
			this.value = value;
			return ret;
		}
		
		public static Comparator<Entry<Joueur, Double>> comparator(){
			return new Comparator<Entry<Joueur, Double>>() {

				@Override
				public int compare(
						Entry<be.ipl.abeille.domaine.Joueur, java.lang.Double> o1,
						Entry<be.ipl.abeille.domaine.Joueur, java.lang.Double> o2) {
					return (int) (o2.getValue() - o1.getValue());
				}
			};
		}
		
		@Override
		public int hashCode() {
			final int prime = 31;
			int result = 1;
			result = prime * result + ((key == null) ? 0 : key.hashCode());
			return result;
		}

		@Override
		public boolean equals(Object obj) {
			if (this == obj)
				return true;
			if (obj == null)
				return false;
			if (getClass() != obj.getClass())
				return false;
			ScoreEntry other = (ScoreEntry) obj;
			if (key == null) {
				if (other.key != null)
					return false;
			} else if (!key.equals(other.key))
				return false;
			return true;
		}

	}
